﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using WebPic.Sample.Comum;
using WebPic.Sample.Modelo.Enums;

namespace WebPic.Sample.Modelo.Entidades {
    public class Produto : EntidadeBase, IValidatableObject {
        private static readonly string[] DescricoesProibidas = new[] {" merda ", " cu ", " bosta "};

        [Required]
        [StringLength(15)]
        [Display(Name = "Código")]
        public string Codigo { get; set; }

        [Required]
        [StringLength(100)]
        [Display(Name="Descrição")]
        public string Descricao { get; set; }

        [EnumDataType(typeof(StatusProduto))]
        public byte Status { get; set; }

        public Guid IdFornecedor { get; set; }

        public string Foto { get; set; }

        public Guid IdGrupoProduto { get; set; }

        public Fornecedor Fornecedor { get; set; }

        public GrupoProduto GrupoProduto { get; set; }

        public ICollection<GradeProduto> GradeProdutos { get; set; }

        public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) {
            // a descrição não deve conter alguma das descrições proibidas
            if(DescricoesProibidas.Any(descricaoProibida => Descricao.Contains(descricaoProibida))) {
                yield return new ValidationResult("Valor inválido para o campo 'Descrição'.", new[] { "Descricao" });
            }
        }
    }
}
